#include "SoundDecoder.h"
#include "WONCommon/WONFile.h"

using namespace WONAPI;

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
SoundDecoder::SoundDecoder()
{
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
SoundDecoder::~SoundDecoder()
{
}

////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
SoundPtr SoundDecoder::Decode(const SoundDescriptor &theDesc)
{
	return DoDecode(theDesc);
}

////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
SoundPtr MultiSoundDecoder::DoDecode(const SoundDescriptor &theDesc)
{
	WONFile aFile(theDesc.mFilePath);
	DecoderMap::iterator anItr = mDecoderMap.find(aFile.GetFileExtension());
	if(anItr!=mDecoderMap.end())
	{
		SoundDecoder *aDecoder = anItr->second;
		return aDecoder->Decode(theDesc);
	}
	else
		return NULL;
}

////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void MultiSoundDecoder::AddDecoder(SoundDecoder *theDecoder, const char *theExtension)
{
	mDecoderMap[theExtension] = theDecoder;
}
